'''
解题思路

该代码采用的算法是滑动窗口（Sliding Window）算法。滑动窗口算法通常用于处理数组或字符串的连续子序列问题，
通过维护一个固定大小的窗口，在数组或字符串上滑动，以高效地解决问题。
在这个问题中，滑动窗口用于维护一个长度为 k 的子数组，并计算该子数组的和。随着窗口向右滑动，
新元素被添加到窗口中，而最左边的元素则被移出窗口。这样可以在 O(1) 的时间复杂度内更新窗口的和，
而不需要重新计算整个子数组的和。
'''
class Solution:
    def findMaxAverage(self, nums: List[int], k: int) -> float:
        total = sum(nums[:k])
        max_value = total
        for i in range(k, len(nums)):
            total += nums[i] - nums[i-k]
            max_value = max(max_value, total)
        return max_value / k